<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>错误捕获示例</title>
    <style>
        /* 页面整体样式 */
        body {
            font-family: 'Arial', sans-serif;
            background-color: #f4f4f9;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            text-align: center;
        }

        /* 容器样式 */
        .container {
            background-color: #fff;
            padding: 30px;
            border-radius: 8px;
            box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
            width: 100%;
            max-width: 600px;
        }

        h1 {
            color: #4CAF50;
            font-size: 28px;
            margin-bottom: 20px;
        }

        p {
            font-size: 16px;
            color: #333;
        }

        /* 错误信息样式 */
        .error-message {
            background-color: #FFDDC1;
            color: #D8000C;
            border: 1px solid #D8000C;
            padding: 15px;
            margin-top: 20px;
            border-radius: 4px;
            font-size: 14px;
            display: inline-block;
            max-width: 100%;
        }

        /* 按钮样式 */
        button {
            background-color: #4CAF50;
            color: white;
            border: none;
            padding: 12px 25px;
            font-size: 16px;
            border-radius: 4px;
            cursor: pointer;
            margin-top: 20px;
        }

        button:hover {
            background-color: #45a049;
        }

        /* 输入框样式 */
        input[type="text"] {
            width: 100%;
            padding: 12px;
            margin-top: 10px;
            margin-bottom: 20px;
            border: 1px solid #ccc;
            border-radius: 4px;
            font-size: 16px;
        }
    </style>
</head>

<body>
    <div class="container">
        <h1>JavaScript 错误捕获示例</h1>
        <p>在下面的输入框中，输入一个数字，点击 "执行" 按钮，模拟错误处理。</p>
        <input id="inputValue" type="text" placeholder="请输入一个数字" />
        <button onclick="handleClick()">执行</button>

        <div id="errorOutput" class="error-message" style="display:none;"></div>
    </div>

    <script src="https://www.eveningwater.com/static/plugin/popbox.min.js"></script>
    <script>
        // 错误捕获函数
        const attempt = (fn, ...args) => {
            try {
                return fn(...args);
            } catch (e) {
                return e instanceof Error ? e : new Error(e);
            }
        };

        // 测试函数，可能会抛出错误
        const testFunction = (input) => {
            if (isNaN(input)) {
                throw new Error("输入无效！请输入一个有效的数字！");
            }
            return `您输入的数字是: ${input}`;
        };

        // 处理点击事件
        function handleClick() {
            const inputValue = document.getElementById("inputValue").value;
            const errorOutput = document.getElementById("errorOutput");

            // 调用 attempt 函数捕获可能的错误
            const result = attempt(testFunction, inputValue);

            // 如果 result 是错误对象，显示错误信息
            if (result instanceof Error) {
                errorOutput.textContent = `发生错误: ${result.message}`;
                errorOutput.style.display = 'inline-block';
            } else {
                // 如果没有错误，清除错误信息并展示正常结果
                errorOutput.style.display = 'none';
                ewConfirm({
                    title: "提示",
                    content: result
                });
            }
        }
    </script>
</body>

</html>